
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO;
using System.Web;
using AEL.ACT;
using AEL.COM;
using BEL;
    
    namespace DEL.COM
    {
    /// <summary>
    /// Acceso a la base de datos
    /// Modulo:Compras ta
    /// Tabla:Com_Solicitud
    /// </summary>
    public class DO_Com_Solicitud
    {
    #region Adapter
        private static CEL.COM.DO_Com_Centro_Aprobar _AdpCom_Centro_Aprobar;
        private static CEL.COM.DO_Com_Centro_Aprobar AdpCom_Centro_Aprobar
        {
            get
            {
                if (_AdpCom_Centro_Aprobar == null)
                    _AdpCom_Centro_Aprobar = new CEL.COM.DO_Com_Centro_Aprobar();
                return _AdpCom_Centro_Aprobar;
            }
        }
        private static CEL.COM.DO_Com_Solicitud_Aprobar _AdpCom_SolicitudApr;
        private static CEL.COM.DO_Com_Solicitud_Aprobar AdpCom_SolicitudApr
    {
    get
    {
        if (_AdpCom_SolicitudApr == null)
            _AdpCom_SolicitudApr = new CEL.COM.DO_Com_Solicitud_Aprobar();
        return _AdpCom_SolicitudApr;
     }
     }
     private static CEL.COM.DO_Com_Solicitud _AdpCom_Solicitud;
     private static CEL.COM.DO_Com_Solicitud AdpCom_Solicitud
     {
         get
         {
             if (_AdpCom_Solicitud == null)
                 _AdpCom_Solicitud = new CEL.COM.DO_Com_Solicitud();
             return _AdpCom_Solicitud;
         }
     }
    #endregion

    #region Operaciones con datos
        public static void EmitirExcepcion(string mensaje, string caso)
        {
            Exception eCaso = new System.Exception(caso);
            Exception otroEX = new System.Exception(mensaje, eCaso);
            throw otroEX;
        }
        public static string Insert(Scope s, Com_Solicitud o_Com_Solicitud)
        {
            string resultado = "";
            try
            {
                AdpCom_Centro_Aprobar.Adapter.BeginTransaction();
                AdpCom_SolicitudApr.Adapter.Transaction = AdpCom_Centro_Aprobar.Adapter.Transaction;
                AdpCom_Solicitud.Adapter.Transaction = AdpCom_Centro_Aprobar.Adapter.Transaction;
                
                //insertar en solicitud
                resultado = AdpCom_Solicitud.Insert(s, o_Com_Solicitud);

                List<Com_Centro_Aprobar> listCentroAprobar = AdpCom_Centro_Aprobar.GetByCentroCompraDisponible(s, o_Com_Solicitud.Com_Centro_Compra_Id, "S");
                Com_Solicitud_Aprobar ComSolicitudApr = null;

                foreach (Com_Centro_Aprobar v_Centro_Aprobar in listCentroAprobar)
                {
                    ComSolicitudApr = new Com_Solicitud_Aprobar();
                    ComSolicitudApr.Per_Personal_Id = v_Centro_Aprobar.Per_Personal_Id;
                    ComSolicitudApr.Com_Solicitud_Id = o_Com_Solicitud.Id;
                    //ComSolicitudApr.Origen = "SOC";
                    //ComSolicitudApr.Origen_Id = o_Com_Solicitud.Id;
                    ComSolicitudApr.Tipo = v_Centro_Aprobar.Tipo;
                    ComSolicitudApr.Fecha_Creacion = DateTime.Now;
                    ComSolicitudApr.Creacion_Per_Personal_Id = s.Per_Personal_Id;
                    ComSolicitudApr.Fecha_Update = DateTime.Now;
                    ComSolicitudApr.Update_Per_Personal_Id = s.Per_Personal_Id;
                    ComSolicitudApr.Descripcion = null;
                    try
                    {
                        AdpCom_SolicitudApr.Insert(s, ComSolicitudApr);
                        
                    }
                    catch (Exception e)
                    {
                        EmitirExcepcion(TXT_Mensajes._MSJ34, e.Message);
                    }
                }
                AdpCom_Centro_Aprobar.Adapter.CommitTransaction();
            }
            catch (Exception e)
            {
                AdpCom_Centro_Aprobar.Adapter.RollbackTransaction();
                throw (e);
            }
            return resultado;
        }
    #endregion
    }
    }
